import { getjsapiSignature } from '@/services/other';
import browser from './browser';



let sdkIsReady = false;
// const loadSdk = (url: string) => {
//     return new Promise((resolve) => {
//         const script = document.createElement('script');
//         script.src = url;
//         document.body.appendChild(script);
//         script.onload = () => {
//             sdkIsReady = true;
//             resolve('ok');
//         };
//     });
// };


/**
 * wxConfig
 * 微信签名url
 * 这里ios和安卓的url不一样
 * ios浏览器 spa类型的h5是首次进入系统的落地页的href
 * 安卓浏览器 spa类型的h5是每个路由的href
 * 这里ios判断下存在wxsignUrl，就不重新赋值
 * 
 * 
 * wxAgentConfig
 * 这里ios和安卓的url一样
 * 是每个路由的href
 */
let wxsignUrl = '';
const setSignUrl = () => {
    return wxsignUrl = window.location.href.split('#')[0];
    if (browser.ios) {
        if (!wxsignUrl) {
            // eslint-disable-next-line prefer-destructuring
            wxsignUrl = window.location.href.split('#')[0];
        }
    }
    else {
        // eslint-disable-next-line prefer-destructuring
        wxsignUrl = window.location.href.split('#')[0];
    }
}


const getSignUrl = () => {
    setSignUrl();
    return wxsignUrl;
}

export const sdkInit = () => {
    setSignUrl();

    // 这里不动态加载了，直接在index.html里面引入
    // if (window.ZHY.ENV.isQywx) {
    //     loadSdk('//res2.wx.qq.com/open/js/jweixin-1.6.0.js');
    // }
};


/**
 * 等待sdk
 * @returns 
 */
export const awaitSdkReady = () => {
    // 是否是企业微信环境
   return window.ZHY.ENV.isQywx;
}



export const wxConfig = async (jsApiList = <any>[], debug = false,) => {
    if (!awaitSdkReady()) return 1;
    const response = await getjsapiSignature({ url: getSignUrl() });
    if (!response.signature) return 2;
    return new Promise((resolve, reject) => {
        console.log('config1');
        wx.config({
            beta: true,
            debug, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
            appId: response.appId, // 必填，公众号的唯一标识
            timestamp: response.timestamp, // 必填，生成签名的时间戳
            nonceStr: response.nonceStr, // 必填，生成签名的随机串
            signature: response.signature,// 必填，签名
            jsApiList, // 必填，需要使用的JS接口列表
            success: function (res: any) {
                console.log('wx.config success', res);
                resolve(true);
                
            },
            fail: function (res: any) {
                console.log('wx.config fail', res);
                reject(res);
                
            }
        });
        console.log('config2');
    })
}

// 企业微信注入应用的权限
export const wxAgentConfig = async (jsApiList = <any>[]): Promise<boolean> => {
    const response = await getjsapiSignature({ url: getSignUrl(), type: "agent_config" });
    if (!response.signature) return false;
    const config = {
        corpid: response.corpid, // 必填，企业微信的corpid，必须与当前登录的企业一致
        agentid: response.agentid,
        timestamp: response.timestamp, // 必填，生成签名的时间戳
        nonceStr: response.nonceStr, // 必填，生成签名的随机串
        signature: response.signature,// 必填，签名
        jsApiList, // 必填，需要使用的JS接口列表

    }
    console.log('agentConfig', config);
    return new Promise((resolve, reject) => {
        wx.agentConfig({
            ...config,
            success: function (res: any) {
                console.log('wx.agentConfig success', res);
                resolve(window.WWOpenData);
            },
            fail: function (res: any) {
                console.log('wx.agentConfig fail', res);
                reject(res);
            }
        });
    });
}

export const wxShare = async ({ title, desc, link, imgUrl }) => {
    console.log('wxShare.....')
    if ((await awaitSdkReady()).code !== 200) return;

    wx.ready(() => {
        // wx.getLocation({
        //     type: 'wgs84', // 默认为wgs84的gps坐标，如果要返回直接给openLocation用的火星坐标，可传入'gcj02'
        //     success(res) {

        //         setLData(res);
        //         console.log(res);
        //     }
        // });
        wx.updateAppMessageShareData({
            title, // 分享标题
            desc, // 分享描述
            link, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
            imgUrl,
            success: () => {
                console.log('设置成功')

            } // 分享图标

        });
        wx.updateTimelineShareData({
            title, // 分享标题
            link, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
            imgUrl, // 分享图标
        })

    });



}


